--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Node / ReticulumProjects / MeshChatX.git / files / meshchatx / src / backend / database / rrc_room_keys.py
Displaying Raw • Download
meshchatx/src/backend/database/rrc_room_keys.py dff83e198e78b84ec225e53ce3ab119f598b0a01 (dff83e19) Text, 2.84 KB
T8b949e# SPDX-License-Identifier: 0BSD
T8b949e"""DAO for encrypted RRC client room keys."""
Tff7b72from T7ee787__future__ Tff7b72import Te6edf3annotations
Tff7b72from T7ee787.T7ee787provider Tff7b72import Te6edf3DatabaseProvider
Tff7b72class T56d364RrcRoomKeysDAOTb4b4b4:
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3providerTb4b4b4: Te6edf3DatabaseProviderTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffprovider Tff7b72= Te6edf3provider
Tff7b72def Td2a8ffupsertTb4b4b4(
Tff7b72selfTb4b4b4,
Te6edf3hub_hashTb4b4b4: Tffa657strTb4b4b4,
Te6edf3dest_nameTb4b4b4: Tffa657strTb4b4b4,
Te6edf3roomTb4b4b4: Tffa657strTb4b4b4,
Te6edf3nonceTb4b4b4: Tffa657bytesTb4b4b4,
Te6edf3ciphertextTb4b4b4: Tffa657bytesTb4b4b4,
Tb4b4b4) Tff7b72-Tff7b72> Tff7b72NoneTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffproviderTff7b72.Td2a8ffexecuteTb4b4b4(
T8b949e"""
INSERT INTO rrc_room_keys (
hub_hash, dest_name, room, nonce, ciphertext, updated_at
) VALUES (?, ?, ?, ?, ?, CURRENT_TIMESTAMP)
ON CONFLICT(hub_hash, dest_name, room) DO UPDATE SET
nonce = EXCLUDED.nonce,
ciphertext = EXCLUDED.ciphertext,
updated_at = CURRENT_TIMESTAMP
"""Tb4b4b4,
Tb4b4b4(Te6edf3hub_hashTb4b4b4, Te6edf3dest_nameTb4b4b4, Te6edf3roomTb4b4b4, Tffa657bytesTb4b4b4(Te6edf3nonceTb4b4b4)Tb4b4b4, Tffa657bytesTb4b4b4(Te6edf3ciphertextTb4b4b4)Tb4b4b4)Tb4b4b4,
Tb4b4b4)
Tff7b72def Td2a8ffgetTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3hub_hashTb4b4b4: Tffa657strTb4b4b4, Te6edf3dest_nameTb4b4b4: Tffa657strTb4b4b4, Te6edf3roomTb4b4b4: Tffa657strTb4b4b4)Tb4b4b4:
Tff7b72return Tff7b72selfTff7b72.Td2a8ffproviderTff7b72.Td2a8fffetchoneTb4b4b4(
T8b949e"""
SELECT hub_hash, dest_name, room, nonce, ciphertext, updated_at
FROM rrc_room_keys
WHERE hub_hash = ? AND dest_name = ? AND room = ?
"""Tb4b4b4,
Tb4b4b4(Te6edf3hub_hashTb4b4b4, Te6edf3dest_nameTb4b4b4, Te6edf3roomTb4b4b4)Tb4b4b4,
Tb4b4b4)
Tff7b72def Td2a8fflist_for_hubTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3hub_hashTb4b4b4: Tffa657strTb4b4b4, Te6edf3dest_nameTb4b4b4: Tffa657str Tff7b72| Tff7b72None Tff7b72= Tff7b72NoneTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3dest_name Tff7b72is Tff7b72NoneTb4b4b4:
Tff7b72return Tff7b72selfTff7b72.Td2a8ffproviderTff7b72.Td2a8fffetchallTb4b4b4(
T8b949e"""
SELECT hub_hash, dest_name, room, updated_at
FROM rrc_room_keys
WHERE hub_hash = ?
ORDER BY room ASC
"""Tb4b4b4,
Tb4b4b4(Te6edf3hub_hashTb4b4b4,Tb4b4b4)Tb4b4b4,
Tb4b4b4)
Tff7b72return Tff7b72selfTff7b72.Td2a8ffproviderTff7b72.Td2a8fffetchallTb4b4b4(
T8b949e"""
SELECT hub_hash, dest_name, room, updated_at
FROM rrc_room_keys
WHERE hub_hash = ? AND dest_name = ?
ORDER BY room ASC
"""Tb4b4b4,
Tb4b4b4(Te6edf3hub_hashTb4b4b4, Te6edf3dest_nameTb4b4b4)Tb4b4b4,
Tb4b4b4)
Tff7b72def Td2a8ffdeleteTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3hub_hashTb4b4b4: Tffa657strTb4b4b4, Te6edf3dest_nameTb4b4b4: Tffa657strTb4b4b4, Te6edf3roomTb4b4b4: Tffa657strTb4b4b4) Tff7b72-Tff7b72> Tffa657intTb4b4b4:
Te6edf3cursor Tff7b72= Tff7b72selfTff7b72.Td2a8ffproviderTff7b72.Td2a8ffexecuteTb4b4b4(
T8b949e"""
DELETE FROM rrc_room_keys
WHERE hub_hash = ? AND dest_name = ? AND room = ?
"""Tb4b4b4,
Tb4b4b4(Te6edf3hub_hashTb4b4b4, Te6edf3dest_nameTb4b4b4, Te6edf3roomTb4b4b4)Tb4b4b4,
Tb4b4b4)
Tff7b72return Tffa657intTb4b4b4(Tffa657getattrTb4b4b4(Te6edf3cursorTb4b4b4, Ta5d6ff"Ta5d6ffrowcountTa5d6ff"Tb4b4b4, T79c0ff0Tb4b4b4) Tff7b72or T79c0ff0Tb4b4b4)
Tff7b72def Td2a8ffdelete_for_hubTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3hub_hashTb4b4b4: Tffa657strTb4b4b4, Te6edf3dest_nameTb4b4b4: Tffa657str Tff7b72| Tff7b72None Tff7b72= Tff7b72NoneTb4b4b4) Tff7b72-Tff7b72> Tffa657intTb4b4b4:
Tff7b72if Te6edf3dest_name Tff7b72is Tff7b72NoneTb4b4b4:
Te6edf3cursor Tff7b72= Tff7b72selfTff7b72.Td2a8ffproviderTff7b72.Td2a8ffexecuteTb4b4b4(
Ta5d6ff"Ta5d6ffDELETE FROM rrc_room_keys WHERE hub_hash = ?Ta5d6ff"Tb4b4b4,
Tb4b4b4(Te6edf3hub_hashTb4b4b4,Tb4b4b4)Tb4b4b4,
Tb4b4b4)
Tff7b72elseTb4b4b4:
Te6edf3cursor Tff7b72= Tff7b72selfTff7b72.Td2a8ffproviderTff7b72.Td2a8ffexecuteTb4b4b4(
Ta5d6ff"Ta5d6ffDELETE FROM rrc_room_keys WHERE hub_hash = ? AND dest_name = ?Ta5d6ff"Tb4b4b4,
Tb4b4b4(Te6edf3hub_hashTb4b4b4, Te6edf3dest_nameTb4b4b4)Tb4b4b4,
Tb4b4b4)
Tff7b72return Tffa657intTb4b4b4(Tffa657getattrTb4b4b4(Te6edf3cursorTb4b4b4, Ta5d6ff"Ta5d6ffrowcountTa5d6ff"Tb4b4b4, T79c0ff0Tb4b4b4) Tff7b72or T79c0ff0Tb4b4b4)
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────